<!-- 绩效-考核管理-晋升考核 -->
<template>
  <pageHeaderNew
    :title="title"
    :breadCrumb="breadCrumb"
    :showBack="false"
  ></pageHeaderNew>
  <a-button @click="aa(1, 2, 3)">213</a-button>
</template>

<script lang="ts" setup>
function debounce(fn, delay = 500) {
  let timeId;
  return function (...args) {
    clearTimeout(timeId);
    timeId = setTimeout(() => {
      fn.apply(this, args);
    }, delay);
  };
}

function throttle(fn, delay = 500) {
  let lastTime = Date.now();

  return function (...args) {
    let currTime = Date.now();
    if (currTime - lastTime >= delay) {
      lastTime = currTime;
      fn.apply(this, args);
    }
  };
}
const aaa = (...rest) => {
  console.log(rest);
};

const aa = throttle(aaa, 1000);

// debounce((1, 2, 3) => {
//   return;
// });

// fn(fn(1, 2, 3));

const router = useRouter();
const title = '晋升考核';

const breadCrumb: string[] = ['绩效', '考核管理', '晋升考核'];

// const PENDING = 'pending';
// const FULFILLED = 'fulfilled';
// const REJECTED = 'rejected';

// class MyPromise {
//   #state = PENDING;
//   #result = undefined;
//   #handlers = []; // 处理多个then
//   constructor(exector) {
//     const resolve = (data) => {
//       this.#changeState(FULFILLED, data);
//     };

//     const reject = (reason) => {
//       this.#changeState(REJECTED, reason);
//     };
//     try {
//       exector(resolve, reject);
//     } catch (error) {
//       reject(error);
//     }
//   }
//   #changeState(state, result) {
//     if (this.#state !== PENDING) return;
//     this.#state = state;
//     this.#result = result;
//     this.#run();
//   }

//   // 判断是不是一个promise
//   #isPromiseLike(val) {
//     if (
//       val !== null &&
//       (typeof val === 'function' || typeof val === 'object')
//     ) {
//       return typeof val.then === 'function';
//     }
//     return false;
//   }

//   #runMicroTask(func) {
//     // 模拟node环境里的微队列
//     if (typeof process === 'object' && process.nextTick) {
//       process.nextTick(func);
//     }
//     // 不是node环境
//     else if (typeof MutationObserver === 'function') {
//       const observer = new MutationObserver(func);
//       const textNode = document.createTextNode('1');
//       observer.observe(textNode, {
//         characterData: true
//       });
//       textNode.textContent = '2';
//     } else {
//       setTimeout(func, 0);
//     }
//   }

//   #runone(callback, resolve, reject) {
//     this.#runMicroTask(() => {
//       if (typeof callback !== 'function') {
//         const settled = this.#state === FULFILLED ? resolve : reject;
//         settled(this.#result);
//         return;
//       }
//       try {
//         const data = callback(this.#result);
//         if (this.#isPromiseLike(data)) {
//           data.then(resolve, reject);
//         } else {
//           resolve(data);
//         }
//       } catch (error) {
//         reject(error);
//       }
//     });
//   }

//   #run() {
//     if (this.#state === PENDING) return;

//     while (this.#handlers.length) {
//       const { onFulfilled, onRejected, resolve, reject } =
//         this.#handlers.shift();
//       if (this.#state === FULFILLED) {
//         this.#runone(onFulfilled, resolve, reject);
//       } else {
//         this.#runone(onRejected, resolve, reject);
//       }
//     }
//   }

//   then(onFulfilled, onRejected) {
//     return new MyPromise((resolve, reject) => {
//       this.#handlers.push({
//         onFulfilled,
//         onRejected,
//         resolve,
//         reject
//       });
//       this.#run();
//     });
//   }
// }
// setTimeout(() => {
//   console.log(1);
// }, 1000);

// const aa = new MyPromise((resolve, reject) => {
//   setTimeout(() => {
//     resolve(2);
//   }, 1000);
// });
// aa.then(null, (err) => {
//   console.log(err + '错误1');
//   return 456;
// }).then(
//   (res) => {
//     console.log(res + '完成2');
//   },
//   (err) => {
//     console.log(err + '错误2');
//   }
// );
// console.log(3);
</script>

<style lang="less" scoped></style>
